﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Business.Operations;
using Entity.Framework;
using System.Collections;

namespace HPDMAS.UserControls
{
    public partial class KullaniciGirisBilgileri : System.Web.UI.UserControl
    {
        //TODO Hakemlik Bilgileri Gözlemcilik Bilgileri KlasmanID alanı düzenleme bölümünde ID'si değişmiyor.
        /// <summary>
        /// kullaniciId SESSION STATE'le gönderilecek.
        /// </summary>
        public int kullaniciId;
        public int rolId;
        private TextBox txtKullaniciLisansNo;
        private TextBox txtKullaniciParola;
        private DropDownList ddlKullaniciSehir;
        private DropDownList ddlKullaniciKlasman;
        private Kullanici k;
        private IList<Kullanici> kullaniciListesi;
        private string _sehirAdi;
        private int _sehirId;
        private string _klasmanAdi;
        private int _klasmanId;

        protected void Page_Load(object sender, EventArgs e)
        {
            GelenIdDegeriIleEntityNesnesiniGetir();
            DetailsViewDoldur();
            DetailsViewIcindekiKontrollerinIdleriniGetir();
        }

        private void GelenIdDegeriIleEntityNesnesiniGetir()
        {
            k = KullaniciOperation.KullaniciGetByKullaniciId(kullaniciId);
        }

        private void DetailsViewDoldur()
        {
            kullaniciListesi = new List<Kullanici>();
            kullaniciListesi.Add(k);
            dvKullaniciGirisBilgileri.DataSource = kullaniciListesi;  //Kullanici döndürür.
            dvKullaniciGirisBilgileri.DataBind();
        }

        private void DetailsViewIcindekiKontrollerinIdleriniGetir()
        { 
            txtKullaniciLisansNo = (TextBox)this.dvKullaniciGirisBilgileri.FindControl("txtLisansNo");
            txtKullaniciParola = (TextBox)this.dvKullaniciGirisBilgileri.FindControl("txtParola");
            ddlKullaniciSehir = (DropDownList)this.dvKullaniciGirisBilgileri.FindControl("ddlSehir");
            ddlKullaniciKlasman = (DropDownList)this.dvKullaniciGirisBilgileri.FindControl("ddlKlasman");
        }

        protected void dvKullaniciGirisBilgileri_ModeChanging(object sender, DetailsViewModeEventArgs e)
        {
            if (e.NewMode == DetailsViewMode.Edit)
            {
                dvKullaniciGirisBilgileri.ChangeMode(DetailsViewMode.Edit);
            }
            else if (e.NewMode == DetailsViewMode.Insert)
            {
                dvKullaniciGirisBilgileri.ChangeMode(DetailsViewMode.Insert);
            }
            else
            {
                dvKullaniciGirisBilgileri.ChangeMode(DetailsViewMode.ReadOnly);
            }

            DetailsViewBind();
        }

        private void DetailsViewBind()
        {
            dvKullaniciGirisBilgileri.DataBind();
        }

        protected void dvKullaniciGirisBilgileri_DataBound(object sender, EventArgs e)
        {
            if (this.dvKullaniciGirisBilgileri.CurrentMode == DetailsViewMode.Edit)
            {
                ddlKullaniciSehir = (DropDownList)this.dvKullaniciGirisBilgileri.FindControl("ddlSehir");
                if (ddlKullaniciSehir != null)
                {
                    ddlSehirDoldur();
                    ddlKullaniciSehir.SelectedValue = SehirOperation.DogumYeriAdiGetByKullaniciId(kullaniciId);
                }

                ddlKullaniciKlasman = (DropDownList)this.dvKullaniciGirisBilgileri.FindControl("ddlKlasman");
                if (ddlKullaniciKlasman != null)
                {
                    ddlKlasmanDoldur();
                    ddlKullaniciKlasman.SelectedValue = KlasmanOperation.KlasmanAdiGetByKullaniciId(kullaniciId);
                }
            }
        }

        private void ddlSehirDoldur()
        {
            ddlKullaniciSehir.DataSource = SehirOperation.SehirAdiGetAll();
            ddlKullaniciSehir.DataBind();
        }

        private void ddlKlasmanDoldur()
        {
            ddlKullaniciKlasman.DataSource = KlasmanOperation.KlasmanAdiGetAll();
            ddlKullaniciKlasman.DataBind();
        }

        protected void dvKullaniciGirisBilgileri_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            //TODO: Buradaki Id ler düzenlenecek. //DÜZENLENDİ
            HakemlikBilgileriGuncelle();
            DuzenlemeModundanListelemeModunaGeç();
        }

        private void DuzenlemeModundanListelemeModunaGeç()
        {
            dvKullaniciGirisBilgileri.ChangeMode(DetailsViewMode.ReadOnly);
            DetailsViewBind();
        }

        public void HakemlikBilgileriGuncelle()
        {
            _sehirAdi = ddlKullaniciSehir.SelectedValue;
            _sehirId = SehirOperation.SehirIdGetBySehirAdi(_sehirAdi);
            _klasmanAdi = ddlKullaniciKlasman.SelectedValue;
            _klasmanId = KlasmanOperation.KlasmanIdGetByKlasmanAdi(_klasmanAdi);
            k.KullaniciID = kullaniciId;
            k.RolID = rolId;
            k.KullaniciLisansNo = txtKullaniciLisansNo.Text.Trim();
            k.KullaniciParola = txtKullaniciParola.Text.Trim();
            k.SehirID = _sehirId;
            k.KlasmanID = _klasmanId;
            k.DegisiklikTarihi = DateTime.Now;
            KullaniciOperation.KullaniciUpdate(k);
        }

    }
}